﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TES.EnteRegulador;

namespace TES.WEB.EnteRegulador
{
    public class LegalizacionesVigentes
    {

        #region CAMPOS

        private int _codigo;

        private int _numeroRadicacion;

        private string _creador;

        private string _estado;

        private DateTime _creacion;

        private DateTime _radicacion;

        #endregion

        #region PROPIEDADES

        public int Codigo
        {
            get { return _codigo; }
            set { _codigo = value; }
        }

        public int NumeroRadicacion
        {
            get { return _numeroRadicacion; }
            set { _numeroRadicacion = value; }
        }

        public string Creador
        {
            get { return _creador; }
            set { _creador = value; }
        }

        public string Estado
        {
            get { return _estado; }
            set { _estado = value; }
        }

        public DateTime Creacion
        {
            get { return _creacion; }
            set { _creacion = value; }
        }

        public DateTime Radicacion
        {
            get { return _radicacion; }
            set { _radicacion = value; }
        }



        #endregion

        #region CONSTRUCTORES

        public LegalizacionesVigentes()
        {
 
        }

        public LegalizacionesVigentes(int codigo, int numeroRadicacion, string creador, string estado, DateTime creacion, DateTime radicacion)
        {
            this._codigo = codigo;
            this._creacion = creacion;
            this._creador = creador;
            this._estado = estado;
            this._numeroRadicacion = numeroRadicacion;
            this._radicacion = radicacion;

        }


        #endregion

        #region METODOS

        public static List<LegalizacionesVigentes> GetDatos(string sortExpressionLeg, string directionLeg, string filtrarCodigo, string filtrarEstado)
        {
            
            


            List<LegalizacionesVigentes> lista = new List<LegalizacionesVigentes>();

            LegalizacionesVigentes enlace = new LegalizacionesVigentes(1, 1001, "SeDaño", "No se sabe", DateTime.MinValue, DateTime.MaxValue);
            LegalizacionesVigentes enlace1 = new LegalizacionesVigentes(2, int.MinValue , "persona", "Proceso", DateTime.MaxValue, DateTime.MinValue);
            LegalizacionesVigentes enlace2 = new LegalizacionesVigentes(3, 1003, "Lucho", "Sin Proceso", DateTime.MinValue, DateTime.MinValue);
            LegalizacionesVigentes enlace3 = new LegalizacionesVigentes(4, int.MinValue  , "David", "modificado", DateTime.MaxValue, DateTime.MinValue);
            LegalizacionesVigentes enlace4 = new LegalizacionesVigentes(5, 1005, "Alguien", "No se sabe", DateTime.MinValue, DateTime.MaxValue);
            lista.Add(enlace2);
            lista.Add(enlace1);
            lista.Add(enlace3);
            lista.Add(enlace);
            lista.Add(enlace4);

            if (filtrarCodigo != null || filtrarEstado != null)
            {
                if (sortExpressionLeg == "NINGUNO")
                {
                    return FiltrarLista(filtrarCodigo, filtrarEstado, lista);
                }
                else
                {
                    return SortGridView(sortExpressionLeg, directionLeg, FiltrarLista(filtrarCodigo, filtrarEstado, lista));
                }
            }

            if (sortExpressionLeg == "NINGUNO")
                return lista;
            else
                return SortGridView(sortExpressionLeg, directionLeg, lista);

        }

        private static List<LegalizacionesVigentes> SortGridView(string sortExpression, string directionDetalles, List<LegalizacionesVigentes> lista)
        {
            if (sortExpression != null && sortExpression != string.Empty)
            {
                ComparadorLegalizacionesVigentes comparador = new ComparadorLegalizacionesVigentes(sortExpression);
                lista.Sort(comparador);

            }

            //Now that we have sorted check to see if the sort direction is desc
            if (directionDetalles != null && directionDetalles == "DESC")
            {
                lista.Reverse();
            }


            return lista;
        }

        private static List<LegalizacionesVigentes> FiltrarLista(string filtrarCodigo, string filtrarCreador, List<LegalizacionesVigentes> lista)
        {

            List<LegalizacionesVigentes> lista2 = new List<LegalizacionesVigentes>();
            lista2 = lista;

            if (filtrarCodigo != null)
            {
                var response = from s in lista2
                               where s._codigo == int.Parse(filtrarCodigo)
                               select s;
                lista2 = response.Cast<LegalizacionesVigentes>().ToList();
            }

            if (filtrarCreador != null)
            {
                var response1 = from s in lista2
                                where s._estado.ToLower() == filtrarCreador.ToLower()
                                select s;
                lista2 = response1.Cast<LegalizacionesVigentes>().ToList();
            }
          


            return lista2;
        }

        #endregion

    }
}
